perm filename CMS6.WRK[T,LSP] blob
sn#627072 filedate 1981-12-01 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00005 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 dial 642-9600
C00003 00003 KWIC: PROCEDURE OPTIONS (MAIN)
C00010 00004 SEPARATE: PROCEDURE (TITLE,LCCN,KEYWORDS)
C00012 00005 DEL
C00020 ENDMK
C⊗;
dial 642-9600
LOGON LIS$10
CXRZ5EG9
EXEC PROFSTD
IPL CMS
edit KWIC PLIOPT
EDIT BOOKS DATA
PLIOPT KWIC
global txtlib plilib
FILEDEF SYSIN DISK BOOKS DATA A (LRECL 80 BLKSIZE 80 RECFM FB
LOAD KWIC (START
INPUT
spool printer copy 1
print kwic listing
spool printer copy 1
TYPE KWIC PLIOPT
KWIC: PROCEDURE OPTIONS (MAIN);
/*A PROGRAM TO FORMAT A KWIC INDEX*/
DECLARE
DIR(10) FIXED (3,0),/*DIRECTORY ARRAY*/
I FIXED (2,0),/*COUNTER*/
BIB CHAR (134) VARYING,/*BIBLIOGRAPHICAL MATERIAL*/
TRUE BIT (1),/*SWITCH TRANSLATION*/
FALSE BIT (1),/*SWITCH TRANSLATION*/
OKOK BIT (1),/*END FLAG*/
KEYWORDS(500,2) CHAR(50) VARYING,/*KWIC ELEMENTS*/
FILL FIXED (3,0),/*COUNTER FOR ARRAY*/
STOPWORDS(7) CHAR(10) INIT ('A','AN','AND','FOR',
'OF','THE','TO'),/*NON INDEXED TERMS*/
STOPWORDLENGTH FIXED BINARY(15);/*SIZE OF STOPWD ARRAY*/
/*INITIALIZE VARIABLES*/
I = 0;
DIR = 0;
OKOK = '1'B;
TRUE = '1'B;
FALSE = '0'B;
DIR(10) = 0;
FILL = 1;
STOPWORDLENGTH = 7;
ON ENDFILE (SYSIN) OKOK = FALSE;
GET EDIT ((DIR (I) DO I = 1 TO 9),BIB)
(9 F(3,0),A(133));
MRCTIME:/*GRAB TITLE & LCCN OUT OF BIB MATERIAL*/
DO WHILE (OKOK);
USEDIR:
CALL SEPARATE (SUBSTR(BIB,DIR(3),DIR(4)-DIR(3)),
SUBSTR(BIB,DIR(7),DIR(8)-DIR(7)));
GET EDIT ((DIR (I) DO I = 1 TO 9),BIB)
(9 F(3,0),A(133));
END USEDIR;
CALL SORT(KEYWORDS,FILL-1);
CALL PRINT←IT(KEYWORDS,FILL-1);
END MRCTIME;
/*DIVIDE TITLES INTO KEYWORDS & STICK IN AN ARRAY WITH LCCN*/
SEPARATE: PROCEDURE (TITLE,LCCN);
DECLARE
TITLE CHAR(50) VARYING,
LCCN CHAR(12) VARYING,
POSITION FIXED (3,0),
WORD CHAR(20) VARYING;
POSITION = INDEX(TITLE,' ');
? SAMURAI: DO WHILE (POSITION ~= 0);/*CHOP UP TITLE*/
WORD = SUBSTR(TITLE,1,POSITION - 1);
/*SCAN FOR STOPWORDS*/
CALL MEMBER (WORD,STOPWORDS,STOPWORDLENGTH,RESULT);
IF (RESULT = FALSE) THEN /*FILL ARRAY ACCEPTABLE WDS*/
DO;
KEYWORDS(FILL,1) = WORD;
KEYWORDS(FILL,2) = LCCN;
FILL = FILL + 1;
END;
TITLE = SUBSTR(TITLE,POSITION + 1);
POSITION = INDEX(TITLE,' ');
END SAMURAI;
END SEPARATE;
MEMBER: PROCEDURE (ITEM,SET,N,RESULT);
DECLARE
SET(*) CHAR (50) VARYING,
N FIXED BINARY (15), /*NO. OF STOPWORDS IN ARRAY*/
I FIXED BINARY (15),/*ARRAY COUNTER*/
DONE BIT (1),/*SWITCH*/
RESULT BIT (1),
ITEM CHAR (50) VARYING;
/*INITIALIZE VARIABLES*/
RESULT = FALSE;
DONE = FALSE;
I = 1;
TEST: DO WHILE ((I <= N) | DONE);
IF (ITEM = SET(I)) THEN DO; DONE = TRUE;
RESULT = TRUE;
END;
I = I + 1;
END TEST;
END MEMBER;
SORT: PROCEDURE (ARRAY,LOC);
DECLARE
ARRAY(*,2) CHAR(50) VARYING,/*KEYWDS & LCCNS*/
TEMP CHAR(50) VARYING,/*FOR SHUFFLING AROUND ARRAY ITEMS*/
LOC FIXED BIN(15),/*POINTER TO ARRAY*
PASS FIXED BIN(15),/*LOOKING OVER ARRAY*/
J FIXED BIN(15),/*COUNTER*/
GO BIT(1);/*SWITCH*/
GO = TRUE;
OUT←OF←SORTS: DO PASS = 1 TO LOC - 1
WHILE (GO);
GO = FALSE;
EACH←PASS: DO J = 1 TO LOC - PASS;
IF ARRAY(J,1) > ARRAY(J + 1,1) THEN
DO;
GO = TRUE;
TEMP = ARRAY(J,1);
ARRAY(J,1) = ARRAY(J + 1,1);
ARRAY(J + 1,1) = TEMP;
TEMP = ARRAY(J,2);
ARRAY(J,2) = ARRAY(J + 1,2);
ARRAY(J + 1,2) = TEMP;
END;
END EACH←PASS;
END OUT←OF←SORTS;
END SORT;
PRINT←IT: PROCEDURE(WORDS,FINDEM)
DECLARE
WORDS(*,2) CHAR(50) VARYING,
FINDEM FIXED BIN(15);
FINDEM = 1;
PUT SKIP LIST
(WORDS(FINDEM,1));
PUT SKIP LIST
(' '||WORDS(FINDEM,2));
LIST: DO I = 1 TO FINDEM;
? IF WORDS(FINDEM,1) ~= WORDS((FINDEM + 1),1) THEN
DO;
PUT SKIP(2) LIST (WORDS(FINDEM,1));
PUT SKIP LIST (' '||WORDS(FINDEM,2));
END;
ELSE PUT SKIP LIST (' '||WORDS(FINDEM,2));
FINDEM = FINDEM + 1;
END LIST;
END PRINT←IT;
END KWIC;
SEPARATE: PROCEDURE (TITLE,LCCN,KEYWORDS);
DECLARE
TITLE CHAR(50) VARYING,
KEYWORDS(*,*) CHAR (50) VARYING,
LCCN CHAR(12) VARYING,
POSITION FIXED (3,0),
RESULT BIT (1),
MORE BIT (1),
WORD CHAR(50) VARYING;
PUT SKIP DATA (TITLE);
MORE = TRUE;
POSITION = INDEX(TITLE,' ');
SAMURAI: DO WHILE (MORE);
IF POSITION ↑= 0 THEN/*CHOP UP TITLE*/
WORD = SUBSTR(TITLE,1,POSITION - 1);
ELSE
DO;
MORE = FALSE;
WORD = TITLE;
END;
/*SCAN FOR STOPWORDS*/
CALL MEMBER (WORD,STOPWORDS,STOPWORDLENGTH,RESULT);
IF (RESULT = FALSE) THEN /*FILL ARRAY ACCEPTABLE WDS*/
DO;
KEYWORDS(FILL,1) = WORD;
PUT SKIP DATA (WORD);
KEYWORDS(FILL,2) = LCCN;
FILL = FILL + 1;
END;
PUT SKIP DATA (KEYWORDS(FILL-1,1));
TITLE = SUBSTR(TITLE,POSITION + 1);
POSITION = INDEX(TITLE,' ');
END SAMURAI;
END SEPARATE;
DEL
DOWN
/LIST:
C/DEM-1/DEM
C/+/-
C/FILL FIXED (3,0)/FILL FIXED BIN (15)
UP 10
INPUT
/*
TYPE 20
FILE
001011016052065069072080093AUGENSTEINMOSHEDATA STRUCTURES AND PL/I PROGRAMMINGPR
ENTICE-HALL197964378-210020-13-197731-8QA76.9.D35
001005012034061065068076089BOHLMARILYNINFORMATION PROCESSINGSCIENCE RESEARCH AS
SOCIATES198049279-175080-574-21265-5QA76.B58 1980
001005009044058062065073084DATEC.J.AN INTRODUCTION TO DATABASE SYSTEMSADDISON-WE
SLEY197753676-556330-201-14456QA75.7.D12
001006012053070074077084097HAYESROBERTHANDBOOK OF DATA PROCESSING FOR LIBRARIESJ
OHN WILEY & SONS197468874-96900-471-36483-5Z678.9.H36
001007011038055059062070083HUGHESJOANPL/I STRUCTURED PROGRAMMINGJOHN WILEY & SON
S197982578-156650-471-01908-9QA76.73.P25H83
001007012037054058061068081KIDDERTRACYTHE SOUL OF A NEW MACHINELITTLE BROWN & CO
198129381-60440-316-49170-5TK7885.4.K53
001006012043057061064072085KNUTHDONALDTHE ART OF COMPUTER PROGRAMMINGADDISON WES
LEY197372367-260200-201-03803-XQA76.5.K35
001010017046063067070078091LANCASTERWILFREDINFORMATION RETRIEVAL SYSTEMSJOHN WIL
EY & SONS197937878-110780-471-04673-6Z699.L35 1979
001007013045059063066074087SHORTTJOSEPHPROBLEM SOLVING AND THE COMPUTERADDISON W
ESLEY197943778-746920-201-06916-4QA76.9.S46W
001015019040052056059067080VAN RIJSBERGENC.J.INFORMATION RETRIEVALBUTTERWORTHS19
7920878-407250-408-70929-4Z699.5.V76
R; T=0.02/0.10 03:18:14
.λ
DMSSTT062E INVALID CHARACTER '_' IN FILEID '_LTYPE MODULE'.
INVALID CMS COMMAND
.λ